package com.yk;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;
import java.util.List;

public class Selenimu4 {
    public static void main(String[] args) {
        WebDriverManager.chromedriver().setup();
        WebDriver driver = new ChromeDriver();
        try {
            driver.get("https://www.imooc.com/");
            // 使用显式等待,等待元素可点击
            //增加了等待时间到10秒（从3秒改为10秒），给页面更多加载时间
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            // 尝试关闭可能的广告弹窗，但如果不存在则忽略
            // 为第一个元素（广告弹窗关闭按钮）添加了 try-catch 块，这样即使找不到该元素也不会导致程序崩溃
            try {
                wait.until(ExpectedConditions.elementToBeClickable(By.id("js-advpop-close"))).click();
                // 在关闭弹窗后添加了短暂等待，确保弹窗完全关闭
                Thread.sleep(1000);
            } catch (Exception e) {
                // 如果没有广告弹窗，继续执行
                System.out.println("没有找到广告弹窗，忽略...");
            }
            //十大元素定位
            //By.id
            wait.until(ExpectedConditions.elementToBeClickable(By.id("js-signin-btn"))).click();
            //By.name
//            driver.findElement(By.name("email")).sendKeys("13886617322");
            // 等待登录表单出现后再填写
            //使用 ExpectedConditions.visibilityOfElementLocated 等待元素可见
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("email"))).sendKeys("13886617322");
            //By.className
//            driver.findElement(By.className("js-loginPassword")).sendKeys("13886617322yk");
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("js-loginPassword"))).sendKeys("13886617322yk");
//            <label for="auto-signin" class="rlf-autoin l" hidefocus="true">
//	                <input type="checkbox" checked="checked" class="auto-cbx" id="auto-signin">
//                  7天内自动登录
//            </label>
            //By.tagName    层级定位
            WebElement webElement = driver.findElement(By.className("rlf-autoin"));
            webElement.findElement(By.tagName("input")).click();

            //By.className  list定位      第五个元素是登录按钮
            List<WebElement> elementList = driver.findElements(By.className("rlf-group"));
            elementList.get(4).click();

            //By.linkText    By.linkText() 定位器来找到页面上文本为"忘记密码"的链接并点击它。
//            driver.findElement(By.linkText("忘记密码")).click();
            //By.partialLinkText    遇到问题按钮
//            driver.findElement(By.partialLinkText("问题")).click();

            // 快速注册按钮
            //By.xpath
//            driver.findElement(By.xpath("//*[@id=\"signin\"]/div[3]/div[1]/span")).click();

            // 《隐私政策》
            //By.cssSelector
//            driver.findElement(By.cssSelector("#signin > div.rl-model-footer > div.privacy_tip > a")).click();
        } finally {
            System.out.println("关闭浏览器...");
//            driver.quit();
            System.out.println("浏览器已关闭!");
        }
    }
}
